package com.example.leetcode;

/**
 * 动态规划
 * 买卖股票的最佳时机含手续费
 * i未持有最高收益f[i][0]  不持仓
 * i持有最高收益f[i][1]    持仓
 */
public class Demo0714 {
    public static void main(String[] args) {
        int [] a=new int[]{1,3,7,5,10,3};
        maxProfit(a,3);
    }
    public static int maxProfit(int[] prices, int fee) {
        int len =prices.length;
        int[][] f=new int[len][2];
        f[0][0]=0;
        f[0][1]=-prices[0];
        for (int i = 1; i < len; i++) {
            //不持仓 i = i-1未持有-i 或者昨天持仓
            f[i][0]=Math.max(f[i-1][1]+prices[i]-fee,f[i-1][0]);
            //持仓 i
            f[i][1]=Math.max(f[i-1][1],f[i-1][0]-prices[i]);
        }
        return f[len-1][0];
    }
}
